package generic;

import java.util.ArrayList;
import java.util.List;

public class Generic {
    public static void main(String[] args) {
        new Model().getData(new CallBack<List<String>>() {
            @Override
            public void onSuc(List<String> res) {
                System.out.println(res.toString());
            }

            @Override
            public void onFail(String err) {
                System.out.println(err);
            }
        });
    }


}

//泛型接口使用方式1,作为匿名内部类使用
class Model {
    public void getData(CallBack<List<String>> back) {
        boolean isSuc = true;
        if (isSuc) {
            List<String> list = new ArrayList<>();
            list.add("成功");
            back.onSuc(list);
        } else {
            back.onFail("失败");
        }
    }
}

//泛型接口使用方式2,定义实现类
class CallBackImp implements CallBack<String> {
    String res;

    public String getRes() {
        return res;
    }

    @Override
    public void onSuc(String res) {
        this.res = res;
    }

    @Override
    public void onFail(String err) {
        this.res = err;
    }
}

//定义泛型接口
interface CallBack<T> {
    void onSuc(T res);

    void onFail(String err);
}


